/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.ik.RestauranteBar.SMO.Manejadores;

import java.sql.ResultSet;
import java.util.Date;
import java.util.List;
import javax.persistence.Query;
import org.ik.RestauranteBar.SMO.Encapsulados.Usuarios;
import org.ik.RestauranteBar.SMO.Manejadores.Conectores.ConexionMySQL;

/**
 *
 * @author Malkavian
 */
public class ManejadorUsuarios extends ConexionMySQL {

    private static ManejadorUsuarios manager;

    public static ManejadorUsuarios getInstance() {
        if (manager == null) {
            manager = new ManejadorUsuarios();
        }
        return manager;
    }

    private ManejadorUsuarios() {
    }

    public List<Usuarios> getUsuarios() {
        List<Usuarios> clientes = null;

        try {
            Query query = getEntity().createNamedQuery("Usuarios.findAll");
            clientes = query.getResultList();
        } catch (Exception ex) {
        }

        return clientes;
    }

    public List<Usuarios> getUsuariosFecha(Date fecha) {
        List<Usuarios> clientes = null;

        try {
            Query query = getEntity().createNamedQuery("Usuarios.findByFechacreacion");
            query.setParameter("fechacreacion", fecha);
            clientes = query.getResultList();
        } catch (Exception ex) {
        }

        return clientes;
    }

    public Boolean borrarUsuario(Usuarios usuario) {

        try {

            Query query = getEntity().createNativeQuery("delete FROM Usuarios u WHERE u.usuario = ?");
            query.setParameter(1, usuario);
            int deleted = query.executeUpdate();
            return true;
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
            return false;
        }

    }

    public Usuarios getUsuario(String usuario, String contrasena) {
        Usuarios cliente = null;

        try {
            Query query = getEntity().createQuery("SELECT u FROM Usuarios u WHERE u.usuario = :usuario AND u.contrasena = :contrasena",Usuarios.class);
            query.setParameter("usuario", usuario.toUpperCase());
            query.setParameter("contrasena", contrasena.toUpperCase());

            cliente = (Usuarios) query.getSingleResult();
        } catch (Exception ex) {
            System.out.println(ex.getMessage());
        }
        return cliente;
    }


    public Boolean insertarUsuarios(Usuarios cliente) {

        try {

            getEntity().getTransaction().begin();
            getEntity().persist(cliente);
            getEntity().getTransaction().commit();
            return true;

        } catch (Exception ex) {
            System.out.println(ex.getMessage());
            return false;
        }

    }
    public Boolean actualizarUsuarios(Usuarios cliente) {

        try {

            getEntity().getTransaction().begin();
            getEntity().merge(cliente);
            getEntity().getTransaction().commit();
            return true;

        } catch (Exception ex) {

            return false;
        }

    }
}
